/*
 * Copyright 2018 JDCLOUD.COM
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http:#www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * 
 * 
 *
 * 
 * Contact: 
 *
 * NOTE: This class is auto generated by the jdcloud code generator program.
 */


using System;
using System.Collections.Generic;
using System.Text;

using JDCloudSDK.Core.Annotation;

namespace JDCloudSDK.Jdfusion.Model
{

    /// <summary>
    ///  createVm
    /// </summary>
    public class CreateVm
    {

        ///<summary>
        /// 资源ID，如果为空，则执行创建操作，否则执行修改操作
        ///</summary>
        public string Id{ get; set; }
        ///<summary>
        /// 可用区,根据各云平台规范填写
        ///</summary>
        public string Region{ get; set; }
        ///<summary>
        /// 云主机所属的可用区
        ///</summary>
        public string Az{ get; set; }
        ///<summary>
        /// 云主机名称
        ///Required:true
        ///</summary>
        [Required]
        public string Name{ get; set; }
        ///<summary>
        /// 云主机
        ///</summary>
        public string HostName{ get; set; }
        ///<summary>
        /// ImageType
        ///</summary>
        public ImageType ImageType{ get; set; }
        ///<summary>
        /// InstanceType
        ///</summary>
        public InstanceType InstanceType{ get; set; }
        ///<summary>
        /// 云主机描述
        ///</summary>
        public string Description{ get; set; }
        ///<summary>
        /// 子网ID
        ///Required:true
        ///</summary>
        [Required]
        public string SubnetId{ get; set; }
        ///<summary>
        /// Tags
        ///</summary>
        public List<Tag> Tags{ get; set; }
        ///<summary>
        /// 所属云提供商ID
        ///</summary>
        public string CloudID{ get; set; }
        ///<summary>
        /// 密钥对名称,jd当前只支持传入一个
        ///</summary>
        public List<string> KeyNames{ get; set; }
        ///<summary>
        /// 主网卡主IP绑定弹性IP的地址
        ///</summary>
        public string ElasticIpAddress{ get; set; }
        ///<summary>
        /// 私有ip地址
        ///</summary>
        public string PrivateIpAddress{ get; set; }
        ///<summary>
        /// 云主机状态
        ///</summary>
        public string Status{ get; set; }
        ///<summary>
        /// 创建时间
        ///</summary>
        public string CreatedTime{ get; set; }
        ///<summary>
        /// 镜像文件ID，启动实例时选择的镜像资源
        ///Required:true
        ///</summary>
        [Required]
        public string ImageId{ get; set; }
        ///<summary>
        /// 规格类型
        ///Required:true
        ///</summary>
        [Required]
        public string InstanceFlavorType{ get; set; }
        ///<summary>
        /// 指定新创建实例所属于的安全组代码，同一个安全组内的实例之间可以互相访问
        ///</summary>
        public string SecurityGroupId{ get; set; }
        ///<summary>
        /// 否  公网入带宽最大值，单位为Mbit/s
        ///</summary>
        public int? InternetMaxBandwidthIn{ get; set; }
        ///<summary>
        /// 否  公网出带宽最大值，单位为Mbit/s
        ///</summary>
        public int? InternetMaxBandwidthOut{ get; set; }
        ///<summary>
        /// 否  实例的密码
        ///</summary>
        public string Password{ get; set; }
        ///<summary>
        /// 否  是否使用镜像预设的密码
        ///</summary>
        public bool PasswordInherit{ get; set; }
        ///<summary>
        /// 否  实例自定义数据，需要以Base64方式编码，原始数据最多为16KB
        ///</summary>
        public string UserData{ get; set; }
        ///<summary>
        /// 否  密钥对名称
        ///</summary>
        public string KeyPairName{ get; set; }
        ///<summary>
        /// SystemDisk
        ///</summary>
        public SystemDisk SystemDisk{ get; set; }
    }
}
